﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using acessaDB;
using Frame;
using System.Data;
using System.Configuration;
using FirebirdSql.Data.FirebirdClient;
using Estrutura;


namespace Banco
{

    public class BD_Lancamento_detalhe
    {
        #region variaveis_globais

        acessaDB.conectaDBFireBird fireBird = new conectaDBFireBird();
        string conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionLocal"];
        string usuario = string.Empty;

        #endregion

        #region construtor

        public BD_Lancamento_detalhe()
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionProd"];
        }
        public BD_Lancamento_detalhe(string usu_Login)
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionProd"];
            usuario = usu_Login;
        }

        #endregion

        #region metodos

        public DataSet _retorna_Lancamento_detalhe(
                                                string CTM_LANCAMENTO_DETALHE_ID,
                                                string CTM_LANCAMENTO_ID,
                                                string CTM_UNIDADE_MEDIDA_ID,
                                                string LDT_VALOR,
                                                string LDT_DATA,
                                                string LDT_PROCESSADO,
                                                string LDT_DATA_INSERT,
                                                string LDT_USU_INSERT,
                                                string LDT_DATA_UPDATE,
                                                string LDT_USU_UPDATE
                                                )
        {

            if (string.IsNullOrEmpty(CTM_LANCAMENTO_DETALHE_ID)) CTM_LANCAMENTO_DETALHE_ID = "'0'";
            if (string.IsNullOrEmpty(CTM_LANCAMENTO_ID)) CTM_LANCAMENTO_ID = "'0'";
            if (string.IsNullOrEmpty(CTM_UNIDADE_MEDIDA_ID)) CTM_UNIDADE_MEDIDA_ID = "'0'";
            if (string.IsNullOrEmpty(LDT_VALOR)) LDT_VALOR = "'0'";
            if (string.IsNullOrEmpty(LDT_DATA)) LDT_DATA = Util.retonarAspas(Util.formataData(System.DateTime.Now.ToString()));
            if (string.IsNullOrEmpty(LDT_PROCESSADO)) LDT_PROCESSADO = "''";
            if (string.IsNullOrEmpty(LDT_DATA_INSERT)) LDT_DATA_INSERT = "''";
            if (string.IsNullOrEmpty(LDT_USU_INSERT)) LDT_USU_INSERT = "'0'";
            if (string.IsNullOrEmpty(LDT_DATA_UPDATE)) LDT_DATA_UPDATE = "''";
            if (string.IsNullOrEmpty(LDT_USU_UPDATE)) LDT_USU_UPDATE = "'0'";

            string sql = "SELECT " +
                                  "CTM_LANCAMENTO_DETALHE.CTM_LANCAMENTO_DETALHE_ID, " +
                                  "CTM_LANCAMENTO_DETALHE.CTM_LANCAMENTO_ID, " +
                                  "CTM_LANCAMENTO_DETALHE.CTM_UNIDADE_MEDIDA_ID, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_VALOR, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_DATA, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_PROCESSADO, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_DATA_INSERT, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_USU_INSERT, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_DATA_UPDATE, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_USU_UPDATE " +
                            "FROM CTM_LANCAMENTO_DETALHE " +
                            "LEFT JOIN CTM_UNIDADE_MEDIDA ON CTM_UNIDADE_MEDIDA.CTM_UNIDADE_MEDIDA_ID = CTM_LANCAMENTO_DETALHE.CTM_UNIDADE_MEDIDA_ID " +
                            "LEFT JOIN CTM_LANCAMENTO ON CTM_LANCAMENTO.CTM_LANCAMENTO_ID = CTM_LANCAMENTO_DETALHE.CTM_LANCAMENTO_ID " +
                            "WHERE " +
                            "      (CTM_LANCAMENTO_DETALHE.CTM_LANCAMENTO_DETALHE_ID       = " + CTM_LANCAMENTO_DETALHE_ID + "  OR " + CTM_LANCAMENTO_DETALHE_ID + " = '0') AND " +
                            "      (CTM_LANCAMENTO_DETALHE.CTM_LANCAMENTO_ID               = " + CTM_LANCAMENTO_ID + "  OR " + CTM_LANCAMENTO_ID + " = '0') AND " +
                            "      (CTM_LANCAMENTO_DETALHE.CTM_UNIDADE_MEDIDA_ID           = " + CTM_UNIDADE_MEDIDA_ID + "  OR " + CTM_UNIDADE_MEDIDA_ID + " = '0') AND " +
                            "      (CTM_LANCAMENTO_DETALHE.LDT_VALOR                       = " + LDT_VALOR + "  OR " + LDT_VALOR + " = '0') AND " +
                            "      (CTM_LANCAMENTO_DETALHE.LDT_DATA                        = " + LDT_DATA + "  OR " + LDT_DATA + " = '') AND " +
                            "      (CTM_LANCAMENTO_DETALHE.LDT_PROCESSADO                  = " + LDT_PROCESSADO + "  OR " + LDT_PROCESSADO + " = '') AND " +
                            "      (CTM_LANCAMENTO_DETALHE.LDT_DATA_INSERT                 = " + LDT_DATA_INSERT + "  OR " + LDT_DATA_INSERT + " = '') AND " +
                            "      (CTM_LANCAMENTO_DETALHE.LDT_USU_INSERT                  = " + LDT_USU_INSERT + "  OR " + LDT_USU_INSERT + " = '0') AND " +
                            "      (CTM_LANCAMENTO_DETALHE.LDT_DATA_UPDATE                 = " + LDT_DATA_UPDATE + "  OR " + LDT_DATA_UPDATE + " = '') AND " +
                            "      (CTM_LANCAMENTO_DETALHE.LDT_USU_UPDATE                  = " + LDT_USU_UPDATE + "  OR " + LDT_USU_UPDATE + " = '0') ";

            DataSet dsRetorno = fireBird.retornaDataSet(sql, conectionString);
            return dsRetorno;

        }


        public List<ES_Lancamento_detalhe> _obter_Lancamento_detalhe(
                                                string CTM_LANCAMENTO_DETALHE_ID,
                                                string CTM_LANCAMENTO_ID,
                                                string CTM_UNIDADE_MEDIDA_ID,
                                                string LDT_VALOR,
                                                string LDT_DATA,
                                                string LDT_PROCESSADO,
                                                string LDT_DATA_INSERT,
                                                string LDT_USU_INSERT,
                                                string LDT_DATA_UPDATE,
                                                string LDT_USU_UPDATE
                                                )
        {

            if (string.IsNullOrEmpty(CTM_LANCAMENTO_DETALHE_ID)) CTM_LANCAMENTO_DETALHE_ID = "'0'";
            if (string.IsNullOrEmpty(CTM_LANCAMENTO_ID)) CTM_LANCAMENTO_ID = "'0'";
            if (string.IsNullOrEmpty(CTM_UNIDADE_MEDIDA_ID)) CTM_UNIDADE_MEDIDA_ID = "'0'";
            if (string.IsNullOrEmpty(LDT_VALOR)) LDT_VALOR = "'0'";
            if (string.IsNullOrEmpty(LDT_DATA)) LDT_DATA = Util.retonarAspas(Util.formataData(System.DateTime.Now.ToString()));
            if (string.IsNullOrEmpty(LDT_PROCESSADO)) LDT_PROCESSADO = "''"; else LDT_PROCESSADO = Util.retonarAspas(LDT_PROCESSADO + " % ");
            if (string.IsNullOrEmpty(LDT_DATA_INSERT)) LDT_DATA_INSERT = "''"; else LDT_DATA_INSERT = Util.retonarAspas(LDT_DATA_INSERT + " % ");
            if (string.IsNullOrEmpty(LDT_USU_INSERT)) LDT_USU_INSERT = "'0'";
            if (string.IsNullOrEmpty(LDT_DATA_UPDATE)) LDT_DATA_UPDATE = "''"; else LDT_DATA_UPDATE = Util.retonarAspas(LDT_DATA_UPDATE + " % ");
            if (string.IsNullOrEmpty(LDT_USU_UPDATE)) LDT_USU_UPDATE = "'0'";

            string sql = "SELECT " +
                                  "CTM_LANCAMENTO_DETALHE.CTM_LANCAMENTO_DETALHE_ID, " +
                                  "CTM_LANCAMENTO_DETALHE.CTM_LANCAMENTO_ID, " +
                                  "CTM_LANCAMENTO_DETALHE.CTM_UNIDADE_MEDIDA_ID, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_VALOR, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_DATA, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_PROCESSADO, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_DATA_INSERT, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_USU_INSERT, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_DATA_UPDATE, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_USU_UPDATE " +
                            "FROM CTM_LANCAMENTO_DETALHE " +
                            "LEFT JOIN CTM_UNIDADE_MEDIDA ON CTM_UNIDADE_MEDIDA.CTM_UNIDADE_MEDIDA_ID = CTM_LANCAMENTO_DETALHE.CTM_UNIDADE_MEDIDA_ID " +
                            "LEFT JOIN CTM_LANCAMENTO ON CTM_LANCAMENTO.CTM_LANCAMENTO_ID = CTM_LANCAMENTO_DETALHE.CTM_LANCAMENTO_ID " +
                            "WHERE " +
                            "      (CTM_LANCAMENTO_DETALHE.CTM_LANCAMENTO_DETALHE_ID       = " + CTM_LANCAMENTO_DETALHE_ID + "  OR " + CTM_LANCAMENTO_DETALHE_ID + " = '0') AND " +
                            "      (CTM_LANCAMENTO_DETALHE.CTM_LANCAMENTO_ID               = " + CTM_LANCAMENTO_ID + "  OR " + CTM_LANCAMENTO_ID + " = '0') AND " +
                            "      (CTM_LANCAMENTO_DETALHE.CTM_UNIDADE_MEDIDA_ID           = " + CTM_UNIDADE_MEDIDA_ID + "  OR " + CTM_UNIDADE_MEDIDA_ID + " = '0') AND " +
                            "      (CTM_LANCAMENTO_DETALHE.LDT_VALOR                       = " + LDT_VALOR + "  OR " + LDT_VALOR + " = '0') ";
                            /*"      (CTM_LANCAMENTO_DETALHE.LDT_DATA                        = " + LDT_DATA + "  OR " + LDT_DATA + " = '') AND " +
                            "      (CTM_LANCAMENTO_DETALHE.LDT_PROCESSADO                  = " + LDT_PROCESSADO + "  OR " + LDT_PROCESSADO + " = '') AND " +
                            "      (CTM_LANCAMENTO_DETALHE.LDT_DATA_INSERT                 = " + LDT_DATA_INSERT + "  OR " + LDT_DATA_INSERT + " = '') AND " +
                            "      (CTM_LANCAMENTO_DETALHE.LDT_USU_INSERT                  = " + LDT_USU_INSERT + "  OR " + LDT_USU_INSERT + " = '0') AND " +
                            "      (CTM_LANCAMENTO_DETALHE.LDT_DATA_UPDATE                 = " + LDT_DATA_UPDATE + "  OR " + LDT_DATA_UPDATE + " = '') AND " +
                            "      (CTM_LANCAMENTO_DETALHE.LDT_USU_UPDATE                  = " + LDT_USU_UPDATE + "  OR " + LDT_USU_UPDATE + " = '0') ";*/

            List<ES_Lancamento_detalhe> lista = new List<ES_Lancamento_detalhe>();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Lancamento_detalhe item = new ES_Lancamento_detalhe();
                    item.CTM_LANCAMENTO_DETALHE_ID = dr["CTM_LANCAMENTO_DETALHE_ID"].ToString();
                    item.CTM_LANCAMENTO_ID = dr["CTM_LANCAMENTO_ID"].ToString();
                    item.CTM_UNIDADE_MEDIDA_ID = dr["CTM_UNIDADE_MEDIDA_ID"].ToString();
                    item.LDT_VALOR = dr["LDT_VALOR"].ToString();
                    item.LDT_DATA = dr["LDT_DATA"].ToString();
                    item.LDT_PROCESSADO = dr["LDT_PROCESSADO"].ToString();
                    item.LDT_DATA_INSERT = dr["LDT_DATA_INSERT"].ToString();
                    item.LDT_USU_INSERT = dr["LDT_USU_INSERT"].ToString();
                    item.LDT_DATA_UPDATE = dr["LDT_DATA_UPDATE"].ToString();
                    item.LDT_USU_UPDATE = dr["LDT_USU_UPDATE"].ToString();
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }


        public ES_Lancamento_detalhe _obter_Lancamento_detalhe_by_id(
                                                string CTM_LANCAMENTO_DETALHE_ID
                                                )
        {

            if (string.IsNullOrEmpty(CTM_LANCAMENTO_DETALHE_ID)) CTM_LANCAMENTO_DETALHE_ID = "'0'";

            string sql = "SELECT " +
                                  "CTM_LANCAMENTO_DETALHE.CTM_LANCAMENTO_DETALHE_ID, " +
                                  "CTM_LANCAMENTO_DETALHE.CTM_LANCAMENTO_ID, " +
                                  "CTM_LANCAMENTO_DETALHE.CTM_UNIDADE_MEDIDA_ID, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_VALOR, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_DATA, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_PROCESSADO, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_DATA_INSERT, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_USU_INSERT, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_DATA_UPDATE, " +
                                  "CTM_LANCAMENTO_DETALHE.LDT_USU_UPDATE " +
                            "FROM CTM_LANCAMENTO_DETALHE " +
                            "LEFT JOIN CTM_UNIDADE_MEDIDA ON CTM_UNIDADE_MEDIDA.CTM_UNIDADE_MEDIDA_ID = CTM_LANCAMENTO_DETALHE.CTM_UNIDADE_MEDIDA_ID " +
                            "LEFT JOIN CTM_LANCAMENTO ON CTM_LANCAMENTO.CTM_LANCAMENTO_ID = CTM_LANCAMENTO_DETALHE.CTM_LANCAMENTO_ID " +
                            "WHERE " +
                            "      (CTM_LANCAMENTO_DETALHE.CTM_LANCAMENTO_DETALHE_ID = " + CTM_LANCAMENTO_DETALHE_ID + "  OR " + CTM_LANCAMENTO_DETALHE_ID + " = '0') ";

            ES_Lancamento_detalhe item = new ES_Lancamento_detalhe();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    item.CTM_LANCAMENTO_DETALHE_ID = dr["CTM_LANCAMENTO_DETALHE_ID"].ToString();
                    item.CTM_LANCAMENTO_ID = dr["CTM_LANCAMENTO_ID"].ToString();
                    item.CTM_UNIDADE_MEDIDA_ID = dr["CTM_UNIDADE_MEDIDA_ID"].ToString();
                    item.LDT_VALOR = dr["LDT_VALOR"].ToString();
                    item.LDT_DATA = dr["LDT_DATA"].ToString();
                    item.LDT_PROCESSADO = dr["LDT_PROCESSADO"].ToString();
                    item.LDT_DATA_INSERT = dr["LDT_DATA_INSERT"].ToString();
                    item.LDT_USU_INSERT = dr["LDT_USU_INSERT"].ToString();
                    item.LDT_DATA_UPDATE = dr["LDT_DATA_UPDATE"].ToString();
                    item.LDT_USU_UPDATE = dr["LDT_USU_UPDATE"].ToString();

                }
                return item;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }


        public void _inserir_Lancamento_detalhe(
                                                string CTM_LANCAMENTO_DETALHE_ID,
                                                string CTM_LANCAMENTO_ID,
                                                string CTM_UNIDADE_MEDIDA_ID,
                                                string LDT_VALOR,
                                                string LDT_DATA,
                                                string LDT_PROCESSADO,
                                                string LDT_DATA_INSERT,
                                                string LDT_USU_INSERT,
                                                string LDT_DATA_UPDATE,
                                                string LDT_USU_UPDATE
                                                )
        {

            if (string.IsNullOrEmpty(CTM_LANCAMENTO_ID)) CTM_LANCAMENTO_ID = "0";
            if (string.IsNullOrEmpty(CTM_UNIDADE_MEDIDA_ID)) CTM_UNIDADE_MEDIDA_ID = "0";
            if (string.IsNullOrEmpty(LDT_VALOR)) LDT_VALOR = "0";

            string sql = " INSERT INTO CTM_LANCAMENTO_DETALHE " +
                         "      ( " +
                         "          CTM_LANCAMENTO_ID              , " +
                         "          CTM_UNIDADE_MEDIDA_ID          , " +
                         "          LDT_VALOR                       " +
                         //"          LDT_DATA                       , " + //A PRINCIPIO A DATA SERÁ A MESMA DO LANÇAMENTO
                         //"          LDT_PROCESSADO                  " +
                         /*"          LDT_DATA_INSERT                , " +
                         "          LDT_USU_INSERT                 , " +
                         "          LDT_DATA_UPDATE                , " +
                         "          LDT_USU_UPDATE                   " +*/
                 "      )" +
                 "  VALUES " +
                 "      ( " +
                              CTM_LANCAMENTO_ID + ", " +
                              CTM_UNIDADE_MEDIDA_ID + ", " +
                              LDT_VALOR + //", " +
                              //Util.retonarAspas(Util.formataData(LDT_DATA), true) + ", " +
                              //Util.retonarAspas(LDT_PROCESSADO, true) + ", " +
                              /*Util.retonarAspas(LDT_DATA_INSERT, true) + ", " +
                              Util.retonarAspas(LDT_USU_INSERT, true) + ", " +
                              Util.retonarAspas(LDT_DATA_UPDATE, true) + ", " +
                              Util.retonarAspas(LDT_USU_UPDATE, true) + */
                 "      )";
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _atualizar_Lancamento_detalhe(
                                                string CTM_LANCAMENTO_DETALHE_ID,
                                                string CTM_LANCAMENTO_ID,
                                                string CTM_UNIDADE_MEDIDA_ID,
                                                string LDT_VALOR,
                                                string LDT_DATA,
                                                string LDT_PROCESSADO,
                                                string LDT_DATA_INSERT,
                                                string LDT_USU_INSERT,
                                                string LDT_DATA_UPDATE,
                                                string LDT_USU_UPDATE
                                                )
        {

            string sql = " UPDATE CTM_LANCAMENTO_DETALHE SET " +
                         "      CTM_LANCAMENTO_ID               = " + Util.retonarAspas(CTM_LANCAMENTO_ID, true) + ", " +
                         "      CTM_UNIDADE_MEDIDA_ID           = " + Util.retonarAspas(CTM_UNIDADE_MEDIDA_ID, true) + ", " +
                         "      LDT_VALOR                       = " + Util.retonarAspas(LDT_VALOR, true) + ", " +
                         "      LDT_DATA                        = " + Util.retonarAspas(Util.formataData(LDT_DATA), true) + ", " +
                         "      LDT_PROCESSADO                  = " + Util.retonarAspas(LDT_PROCESSADO, true) + ", " +
                         "      LDT_DATA_INSERT                 = " + Util.retonarAspas(LDT_DATA_INSERT, true) + ", " +
                         "      LDT_USU_INSERT                  = " + Util.retonarAspas(LDT_USU_INSERT, true) + ", " +
                         "      LDT_DATA_UPDATE                 = " + Util.retonarAspas(LDT_DATA_UPDATE, true) + ", " +
                         "      LDT_USU_UPDATE                  = " + Util.retonarAspas(LDT_USU_UPDATE, true) +
                         " WHERE CTM_LANCAMENTO_DETALHE_ID =  " + CTM_LANCAMENTO_DETALHE_ID;
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _excluir_Lancamento_detalhe(string CTM_LANCAMENTO_DETALHE_ID)
        {
            string sql = "DELETE FROM CTM_LANCAMENTO_DETALHE WHERE CTM_LANCAMENTO_DETALHE_ID = " + CTM_LANCAMENTO_DETALHE_ID;
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        #endregion
    }
}
